//运动函数封装
function move(ele, options, fn = function () { }) {
    //ele : 表示要运动的元素
    //options 是一个对象数据类型, 你要运动的所有样式
    //taeget ：表示要运动的终点位置
    //fn：表示运动结束后执行的代码
    //准备一个定时器
    let count = 0
    //遍历数组options
    for (let key in options) {
        //每循环一次 开启一个定时器
        count++
        //判断  key 是opacity 的时候  options的每个值扩大100倍
        if (key === 'opacity') options[key] *= 100
        //准备一个间隔定时器
        const timer = setInterval(() => {
            //定义一个变量  拿到当前值
            let current
            // 判断  key 的值是opacity 时 将该标签的属性值 扩大100倍 赋值给current
            if (key === 'opacity') {
                current = window.getComputedStyle(ele)[key] * 100
            } else {
                //否则 将该标签的属性值 转成数值型 赋值 给 current
                current = parseInt(window.getComputedStyle(ele)[key])
            }
            //计算每次的移动距离
            let distance = (options[key] - current) / 10
            //判断 distance 的值 
            //如果大于0 则向上取整后赋值给 distance
            //如果小于0 则向下取整后赋值给 distance
            distance = distance > 0 ? Math.ceil(distance) : Math.floor(distance)
            //判断  如果 current 的值 等于 初始值的时候
            //关闭定时器
            if (current === options[key]) {
                clearInterval(timer)
                count--
                // 当计数器 = 0 的时候 表示运动结束
                if (count === 0) fn()
            } else {
                //进行判定
                if (key === 'opacity') {
                    ele.style[key] = (current + distance) / 100
                } else {
                    ele.style[key] = current + distance + 'px'
                }
            }
        }, 10)
    }
}